package com.hhqk.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.hhqk.model.Dept;
import com.hhqk.service.DeptService;

/**
 * 这个Controller类，专门处理部门相关的Controller
 * @author msi
 *
 */
@Controller
public class DeptController {
	
	@Autowired
	private DeptService deptService;
	/*
	 * 这个方法是定位 系统管理模块的left_frame 对应的后台访问路径是：/sysadmin/left
	 * 对应的访问页面：WEB-INF/pages/sysadmin/left.jsp
	 */
	@RequestMapping("/sysadmin/left")
	public String goSysadmin(){
		return "sysadmin/left";
	}
	/*
	 * 这个方法是定位 系统管理模块 main_frame 对应得到后台访问路径是： /sysadmin/main
	 * 对应的访问页面：WEB-INF/pages/sysadmin/main.jsp
	 * 
	 */
	@RequestMapping("/sysadmin/main")
	public String goSysadminMain(){
		return "sysadmin/main";
	}
	
	/*
	 * 这个方法，是定位部门列表查询页面的，对应的后台请求路径是：/sysadmin/dept/list
	 * 对应的页面：在WEB-INF/pages/sysadmin/dept/jDeptList.jsp
	 * 前台页面要的值有：部门编号，父部门名称，本部门名称，状态
	 * 所以注意：
	 * 实现思路是当转向 部门列表页面是，应该用Model对象，把相关的数据传给前台
	 */
	@RequestMapping("/sysadmin/dept/list")
	public String list(Model model){
		List<Dept> dataList=deptService.findAllDept();
		model.addAttribute("dataList", dataList);
		
		return "sysadmin/dept/jDeptList";
	}
	
	/*
	 * 这个方法是部门新增的方法，对应的后台请求路径是:/sysadmin/dept/tocreate
	 * 对应的页面是：在WEB-INF/pages/sysadmin/dept/jDeptCreate.jsp
	 * 
	 * 对于新增页面，涉及到父部门信息的选择，所以需要组织数据返回给前台
	 */
	@RequestMapping("/sysadmin/dept/tocreate")
	public String toCreate(Model model){
		List<Dept> dataList=deptService.findAllDept();
		model.addAttribute("dataList", dataList);
		
		return "sysadmin/dept/jDeptCreate";
	}
	/*
	 * 这个方法是新增保存方法
	 */
	@RequestMapping("/sysadmin/dept/insert")
	public String insert(Dept dept){
		deptService.insert(dept);
		//部门新增完成之后，转发到部门列表页面，利用的 forward:，实现请求转发，很方便
		return "forward:/sysadmin/dept/list";
	}
	/*
	 * 这个方法是用来转向 部门更新页面的，对应的后台请求路径是：/sysadmin/dept/toupdate
	 * 对应的更新页面：在WEB-INF/pages/sysadmin/dept/jDeptUpdate.jsp
	 * 需要注意的问题1：当勾选某一个部门时，别忘了接一下传过来的 deptId(主键值)因为要根据主键值来做相关操作
	 * 更新的需求说明：部门名字 ，父部门信息
	 * 需要注意的问题2：转向更新页面的时候，想办法把主键值传过去
	 * 
	 */
	@RequestMapping("/sysadmin/dept/toupdate")
	public String toUpdate(String deptId,Model model){
		//组织所有的部门信息，供父部门的下拉列表使用
		List<Dept> dataList=deptService.findAllDept();
		Dept dept=deptService.findDeptById(deptId);
		model.addAttribute("dataList", dataList);
		//用于更新页面的信息回显，并且含有部门的主键值，这样也可以主键值传递过去
		model.addAttribute("dept", dept);
		
		
		return "sysadmin/dept/jDeptUpdate";
	}
	@RequestMapping("/sysadmin/dept/update")
	public String update(Dept dept){
		deptService.update(dept);
		//如果是重定向的话，用redirect: 来做
		return "redirect:/sysadmin/dept/list";
	}
	/*
	 * 这个方法是删除单个部门信息
	 */
	@RequestMapping("/sysadmin/dept/deleteone")
	public String deleteOne(String deptId){
		deptService.deleteOne(deptId);
		//删除成功后，转发到部门列表页面
		return "forward:/sysadmin/dept/list";
	}
	/*
	 * 这个方法是批量删除方法，对应的后台请求路径是：/sysadmin/dept/delete
	 */
	@RequestMapping("/sysadmin/dept/delete")
	public String deleteBatch(String[]deptId){
		deptService.deleteBatch(deptId);
		return "forward:/sysadmin/dept/list";
	}
}
